package written_examination;

public class Solution_11_23_2 {
    public int MoreThanHalfNum_Solution (int[] numbers) {
        //候选人法：先选定一个为候选人，遍历数组，如果遇到和他相同的元素就让他的票数+1，如果遇到不一样的就-1，直到票数为0时，就重新选定，选定的这个候选人就是遍历到的那个元素，然后继续进行相同 的操作
        int candidate = -1;
        int count = 0;
        for(int i = 0; i < numbers.length;i++){
            if(count == 0){
                candidate = numbers[i];
                count++;
            }else{
                if(candidate == numbers[i]){
                    count++;
                }else{
                    count--;
                }
            }
        }
        count = 0;
        for(int j : numbers){
            if(candidate == j){
                count++;
            }
        }
        if(count > numbers.length / 2){
            return candidate;
        }
        return 0;
    }
}
